<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<head>

<style type="text/css">



  /* default css */
  
  table {
    font-size: 1em;
  }

  
  div, address, ol, ul, li, option, select { 
    margin-top: 0px;
    margin-bottom: 0px;
  }

  p {
    margin: 0px;
  }

  body {
    padding: 0px;
    
    
      margin: 0px;
    
  }

  h6 { font-size: 10pt }
  h5 { font-size: 11pt }
  h4 { font-size: 12pt }
  h3 { font-size: 13pt }
  h2 { font-size: 14pt }
  h1 { font-size: 16pt }

  blockquote {padding: 10px; border: 1px #DDD dashed }

  a img {border: 0}

  strike { text-decoration: line-through }

  div.google_header, div.google_footer {
    position: relative;
    margin-top: 1em;
    margin-bottom: 1em;
  }
  /* end default css */

  
    /* default print css */
    @media print {
      body { 
        padding: 0; 
        margin: 0; 
      }

      ol[type="a"] { list-style-type: lower-alpha }
      ol[type="A"] { list-style-type: upper-alpha }
      ol[type="i"] { list-style-type: lower-roman }
      ol[type="I"] { list-style-type: upper-roman }
    
      div.google_header, div.google_footer {
        display: block;
        min-height: 0;
        border: none;
      }

      div.google_header {
        flow: static(header);
      }

      /* used to insert page numbers */
      div.google_header::before, div.google_footer::before {
        position: absolute;
	top: 0;
      }

      div.google_footer {
        flow: static(footer);
      }

      /* always consider this element at the start of the doc */
      div#google_footer {
        flow: static(footer, start);
      }

      span.google_pagenumber {
        content: counter(page);
      }

      span.google_pagecount {
        content: counter(pages);
      }
    }

    @page {
      @top {
        content: flow(header);
      }
      @bottom {
        content: flow(footer);
      }
    }
    /* end default print css */
   
  
  /* custom css */
  
  
  /* end custom css */

  /* ui edited css */
  
  body {
    font-family: Verdana;
    
    font-size: 10.0pt;
    line-height: 1.5;
    background-color: #ffffff;
  }
  /* end ui edited css */

</style>
</head>


<body revision="dgtsd5n5_0jphbkr:71">

<h3>
  Audience
</h3>
This document will guide you through the process of setting up a Bungee View
database and server.&nbsp; At the end, your users will see a web page something like
<a href=http://cityscape.inf.cs.cmu.edu/bungee/ id=kf9c title="Bungee View home page">this</a>.&nbsp; It does not explain how to modify or compile the Java client and server applications themselves.<br>
<br>
<h3>
  Prerequisites
</h3>
(All prerequisite software is free, and runs on Windows, Mac, or Linux.)<br>
<br>
<ul>
  <li>
    <a href=http:/www.java.com/getjava/ id=u-:g title=Java>Java</a>, version 5
    or later.
  </li>
  <li>
    <a href=http://dev.mysql.com/downloads/ id=e-.b title="MySql database server">MySQL</a>
    database server, version 4 or later.
  </li>
  <li>
    <a href=http://tomcat.apache.org/ id=koo_ title="Apache Tomcat">Apache
    Tomcat</a> web server, version 5 or later.
  </li>
</ul>
<br>
<h3>
  Overview
</h3>
Bungee View requires its own copy of your collection meta-data, which it stores
in a MySQL database.&nbsp; Bungee View comes with some scripts to read MARC or
Dublin Core meta-data and create the necessary facet hierarchies. Your meta-data
doesn't have to be in these forms -- it just means you have to do more of the
work in setting up the database.<br>
<br>
The web server uses Java servlets to process HTTP requests, query the database,
and send back responses.<br>
<br>
An end user clicks on a link on the web page you create to run the Bungee View
client as a Java Web Start application. The client runs as a regular
application, not inside a browser.&nbsp; It uses the HTTP protocol for
communication with the server, so the server can be behind a firewall. The
messages sent back and forth are binary, though, not HTML.<br>
<br>
<h3>
  Security
</h3>
If someone manages to login to MySQL with administrative privileges, they can
wreck your computer. If you require the root user to connect from localhost, you
reduce this risk. Tomcat is supposed to prevent access to files in the WEB-INF
directory, like the xml file that contains the bungee password. Still, you
should not give the bungee user more privileges than the ones listed in the
instructions, and only allow it to access the Bungee View databases. Then the
worst that can happen is having these databases corrupted. For additional
protection, you can require bungee to connect from the web server (which is
probably localhost) as well. It would be hard to do any damage by going through
the servlet, because it only accepts a limited number of commands, not arbitrary
SQL statements.<br>
<h3>
  Setup
</h3>
<ol>
  <li>
    <a href=Set_up_a_pre_built_data.html id=hey1 title="Set up a prebuilt database">Set
    up the prebuilt demonstration database</a>, the WPA Posters collection from
    LC American Memory.<br>
    It will be easier to understand how to create your own database once you
    have a working example to look at. Further, the database creation scripts assume there is already a database called "wpa" that they can copy from.<br>
  </li>
  <li>
    <a href=Install_Bungee_View_ser.html id=r:-y title="Install the Bungee View servlet">Install
    the Bungee View server files</a> in Tomcat.<br>
    You now have a working Bungee View server, and a home page where users can
    run it.<br>
  </li>
  <li>
    <a href=Create_Your_Database.html id=azqx title="Set up a database for your collection">Set
    up a database for your collection</a>.
  </li>
  <li>
    Send feedback.<br>
    Please send suggestions for improving Bungee View or this documentation to
    <a href=mailto:mad@cs.cmu.edu id=yqei title=mad@cs.cmu.edu>mad@cs.cmu.edu</a>.
    Or at least let us know you're using Bungee View.
  </li>
</ol>
<br>
<br>
<br></body>
</html>
